\documentclass[format=sigconf]{acmart}
%\documentclass{sig-alternate-05-2015}
\usepackage[utf8]{inputenc}
\usepackage{color}

\def\inputfig#1{\input #1}
\def\inputtex#1{\input #1}
\def\inputal#1{\input #1}
\def\inputcode#1{\input #1}
\newcommand\inputeps[1]{\includegraphics[width=\linewidth]{#1}}

\inputtex{logos.tex}
\inputtex{refmacros.tex}
\inputtex{other-macros.tex}
\inputtex{tikz-macros.tex}

\acmConference[ELS'18]{the 11th European Lisp Symposium}{April 16--17 2018}{%
  Marbella, Spain}
\acmISBN{978-2-9557474-2-1}
\acmDOI{10.5281/zenodo.3247542}

\setcopyright{rightsretained}

\begin{document}
%\conferenceinfo{11th ELS}{April 16--17, 2018, Marbella, Spain}

\title{Partial Inlining Using Local Graph Rewriting
}

\author{Irène Durand
}
\authornote{
This author was supported by the French National Research Agency (ANR project GraphEn / ANR-15-CE40-0009).}
\email{irene.durand@u-bordeaux.fr}

\author{Robert Strandh}
\email{robert.strandh@u-bordeaux.fr}

\affiliation{
  \institution{LaBRI, University of Bordeaux}
  \streetaddress{351 cours de la libération}
  \city{Talence}
  \country{France}}

%\numberofauthors{2}
%% \author{\alignauthor
%% Irène Durand\\
%% Robert Strandh\\
%% \affaddr{University of Bordeaux}\\
%% \affaddr{351, Cours de la Libération}\\
%% \affaddr{Talence, France}\\
%% \email{irene.durand@u-bordeaux.fr}
%% \email{robert.strandh@u-bordeaux.fr}}

%% \toappear{Permission to make digital or hard copies of all or part of
%%   this work for personal or classroom use is granted without fee
%%   provided that copies are not made or distributed for profit or
%%   commercial advantage and that copies bear this notice and the full
%%   citation on the first page. Copyrights for components of this work
%%   owned by others than the author(s) must be honored. Abstracting with
%%   credit is permitted. To copy otherwise, or republish, to post on
%%   servers or to redistribute to lists, requires prior specific
%%   permission and/or a fee. Request permissions from
%%   Permissions@acm.org.

%%   ELS '17, April 3 -- 6 2017, Brussels, Belgium
%%   Copyright is held by the owner/author(s). %Publication rights licensed to ACM.
%% %  ACM 978-1-4503-2931-6/14/08\$15.00.
%% %  http://dx.doi.org/10.1145/2635648.2635654
%% }


\begin{abstract}
Inlining is an important optimization technique in any modern
compiler, though the description of this technique in the literature
is informal and vague.  We describe a technique for inlining, designed
to work on a \emph{flow graph} of instructions of intermediate code.

Our technique uses \emph{local graph rewriting}, making the semantic
correctness of this technique obvious.  In addition, we prove
that the algorithm terminates.

As a direct result of the preservation of the semantics of the program
after each local rewriting step, the algorithm can stop after any
iteration, resulting in a \emph{partial inlining} of the called
function.  Such partial inlining can be advantageous in order to avoid
the inlining of code that is not performance critical, in particular
for creating arguments and calls to error-signaling functions.
\end{abstract}

 \begin{CCSXML}
<ccs2012>
<concept>
<concept_id>10011007.10010940.10010971.10011682</concept_id>
<concept_desc>Software and its engineering~Abstraction, modeling and modularity</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10011007.10010940.10011003.10011002</concept_id>
<concept_desc>Software and its engineering~Software performance</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10011007.10011006.10011041</concept_id>
<concept_desc>Software and its engineering~Compilers</concept_desc>
<concept_significance>500</concept_significance>
</concept>
</ccs2012>
\end{CCSXML}

\ccsdesc[500]{Software and its engineering~Abstraction, modeling and modularity}
\ccsdesc[500]{Software and its engineering~Software performance}
\ccsdesc[500]{Software and its engineering~Compilers}

%\printccsdesc

\keywords{\commonlisp{}, Compiler optimization, Portability, Maintainability, Graph rewriting}

\maketitle
\inputtex{spec-macros.tex}

\inputtex{sec-introduction.tex}
\inputtex{sec-previous.tex}
\inputtex{sec-our-method.tex}
\inputtex{sec-conclusions.tex}
\inputtex{sec-acknowledgements.tex}

%\bibliographystyle{abbrv}
\bibliographystyle{plainnat}
\bibliography{partial-inlining}
\end{document}

%%  LocalWords:  Inlining inlining
